home *** CD-ROM | disk | FTP | other *** search
- //: C21:MemFun1.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Applying pointers to member functions
- #include "../purge.h"
- #include <algorithm>
- #include <vector>
- #include <iostream>
- #include <functional>
- using namespace std;
-
- class Shape {
- public:
- virtual void draw() = 0;
- virtual ~Shape() {}
- };
-
- class Circle : public Shape {
- public:
- virtual void draw() {
- cout << "Circle::Draw()" << endl;
- }
- ~Circle() {
- cout << "Circle::~Circle()" << endl;
- }
- };
-
- class Square : public Shape {
- public:
- virtual void draw() {
- cout << "Square::Draw()" << endl;
- }
- ~Square() {
- cout << "Square::~Square()" << endl;
- }
- };
-
- int main() {
- vector<Shape*> vs;
- vs.push_back(new Circle);
- vs.push_back(new Square);
- for_each(vs.begin(), vs.end(),
- mem_fun(&Shape::draw));
- purge(vs);
- } ///:~
-